1. BLE⋅MQTT 메시지(Version 1)

1.1 BLE 메시지

1.1.1 메시지 형식

Q=<MessageCode>;<DeviceType>;<Mode>,<BatteryValue>,<SeqNo>,<DeviceID>;<MqttUser>;<MqttPass>;<Site>

구 분	설 명	비 고
MessageCode	o 0 : 상태 메시지 o 2 : 격발 메시지
DeviceType	o 1 : 추락보호복
Mode	o 추락 검출 모드
BatteryValue	o 배터리 레벨	백분률
SeqNo	o 메시지 일련번호	000 ∼ 999
DeviceID	o 디바이스 고유번호
MqttUser	o MQTT 사용자	未사용
MqttPass	o MQTT 비밀번호	未사용
Site	o 현장명

1.1.2 상태 메시지

o MCU 부팅 이후 5초마다 전송하며, BLE MCU를 통해 ‘Android~~~~~’(스마트폰 전송 필요)를 수신하면 1분마다 전송하는 것으로 전환

1.2 MQTT 메시지

1.2.1 MQTT 토픽

o 추락보호복 : 현장명

1.2.2 BLE 메시지 전송

o 스마트폰 앱은 블루투스를 통해 수신한 BLE 메시지에서 ‘MqttPass’를 제거하고 GPS 정보를 첨부한 후 MQTT 서버로 전달

Q=<MessageCode>;<DeviceType>;<Mode>,<BatteryValue>,<SeqNo>,<DeviceID>;<MqttUser>;<Site>;<Lattitude>,<Longitude>

2. BLE⋅MQTT 메시지(Version 2)

2.1 BLE 메시지

2.1.1 메시지 형식

Q=<MessageCode>;<Version>;<DeviceType>;<DeviceID>;<Message>;<SeqNo>

구 분	설 명	비 고
MessageCode	o 0 : 상태 메시지 o 1 : 연결 메시지 o 2 : 격발 메시지 o 3 : DFU 관리 o 5 : 작동 메시지 o 9 : 사용자 관리	MQTT 메시지용 MQTT 메시지용
Version	o ‘2’를 사용
DeviceType	o 1 : 추락보호복 o 2 : 노인낙상
DeviceID	o 디바이스 고유번호	SWYYMMTNNNNN
Message	o 각 메시지별 상이
SeqNo	o 메시지 일련번호	0 ∼ 999

2.1.2 연결 메시지

o BLE 접속時 1회 전송

o 메시지 내용

Q=1;2;<DeviceType>;<DeviceId>;<VersionInfo>,<TimeInfo>,<BatteryValue>, <BootResult>,<CPUID>,<BleAddr>;<SeqNo>

구 분	설 명	비 고
VersionInfo	o 펌웨어 버전
TimeInfo	o RTC 현재 시간
BatteryValue	o 배터리 레벨	백분률
BootResult	o 센서보드 부팅 결과	16진수 스트링
CPUID	o MCU 고유번호
BleAddr	o BLE 주소	6 바이트

o 오류 감지時 BootResult 설정값

#define SYS_INIT_FAULT_GPIO         0x00000001

#define SYS_INIT_FAULT_DMA          0x00000002

#define SYS_INIT_FAULT_UART         0x00000004

#define SYS_INIT_FAULT_ADC          0x00000008

#define SYS_INIT_FAULT_TWI          0x00000010  // I2C

#define SYS_INIT_FAULT_TIMER        0x00000020

#define SYS_INIT_FAULT_SPI          0x00000040

#define SYS_INIT_FAULT_QSPI         0x00000080

#define SYS_INIT_FAULT_RTC          0x00000100

#define SYS_INIT_FAULT_FLASH        0x00000200

#define SYS_INIT_FAULT_IMU          0x00000400

#define SYS_INIT_FAULT_BATTERY      0x00000800

#define SYS_INIT_FAULT_BUZZER       0x00001000

#define SYS_INIT_FAULT_W25Q         0x00002000

#define SYS_INIT_FAULT_TICK         0x00004000

#define SYS_INIT_FAULT_ACTUATOR     0x00008000

#define SYS_INIT_FAULT_BLE          0x00010000

#define SYS_INIT_FAULT_UPSIDE_DOWN  0x80000000

2.1.3 상태 및 격발 메시지

o 상태 메시지는 1분마다, 격발 메시지는 추락이나 낙상 검출時 전송

o 메시지 내용

Q=<MessageCode>;2;<DeviceType>;<DeviceId>;<Trigger>,<Battery>,<Actuator>, <IMU>,<Flash>;<SeqNo>

구 분	설 명	비 고
Trigger	o 격발 유형	0 : 未격발
Battery	o 배터리 레벨	백분율 표시
Actuator	o Actuator 연결 상태	0 : 정상, 1 : 장애
IMU	o IMU 센서 오류 횟수
Flash	o 플래쉬 오류 횟수

2.1.4 작동 메시지

2.1.4.1 위험도 전송

o 5분마다 위험도(5분 동안의 최댓값)를 전송

o 메시지 내용

Q=5;2;<DeviceType>;<DeviceId>;0,<Risk>;<SeqNo>

구 분	설 명	비 고
Risk	o 위험도 수치	백분율 표시

2.2 MQTT 메시지

2.2.1 MQTT 메시지(스마트폰 → 서버)

2.2.1.1 MQTT 토픽

o 추락보호복 : C3

o 노인낙상 : D1

2.2.1.2 BLE 메시지 전송

o 스마트폰 앱은 블루투스를 통해 수신한 BLE 메시지를 MQTT 서버로 전달

o 격발 메시지는 GPS 및 주소 정보를 첨부한 후 MQTT 서버로 전달

Q=2;2;<DeviceType>;<DeviceID>;<Message>;SeqNo;<Lattitude>,<Longitude>; <Location>;<Address>

* BLE를 통해 센서보드로 ‘ack 2’를 전송, 격발 메시지 재전송 차단

o 격발 메시지 이외의 메시지는 BLE 메시지 그대로 MQTT 서버로 전달

2.2.1.3 사용자 및 보호자 등록

o 사용자 등록

Q=9;2;2;<DeviceID>;0,<TelNo>,<TokenKey>;0

* 사용자 등록時 서버내 旣등록 보호자 정보 삭제

* TokenKey : 32 바이트 랜덤 스트링

o 사용자 전환

Q=9;2;2;<DeviceID>;1,<TelNo>,<TokenKey>;0

* 사용자 전환時 서버내 旣등록 보호자 정보 유지

o 보호자 등록

Q=9;2;2;<DeviceID>;2,<TelNo>,<Mode>;0

구 분	설 명	비 고
Mode	o 0 : SMS만 수신 o 1 : 보호자 앱 모드	사용자 동의 未확인 사용자 동의 확인

o 보호자의 보호자 등록

Q=9;2;2;<DeviceID>;3,<TelNo>,<Mode>;0

구 분	설 명	비 고
Mode	o 0 : SMS만 수신 o 1 : 보호자 앱 모드	사용자 동의 未확인 사용자 동의 확인

2.2.1.4 만보기 데이터 전송

o 걸음수⋅칼로리 등 만보기 데이터를 30분마다 MQTT 서버로 전송

Q=5;2;2;<DeviceID>;1,<Walk>,<Calory>,<Span>;0

* Span : 운동시간, 초 단위

2.2.1.5 위치 정보 전송

o 위치 정보를 5분마다 MQTT 서버로 전송

Q=5;2;2;<DeviceID>;2,<Latitude>,<Longitude>[;<위치명칭>;<주소>];0

* 위치명칭이 이전(위치 정보 메시지)과 동일한 경우, 위치명칭과 주소는 생략

2.2.1.6 목표 걸음수 전송

o 목표 걸음수 설정時 MQTT 서버로 전송

Q=5;2;2;<DeviceID>;3,<goal>;0

2.2.1.7 C3 가동 시작

o BLE 접속을 만든 후 BLE 메시지를 최초 수신했을 때, 同 메시지를 전송

Q=5;2;1;<DeviceID>;7,<UserName>;0

2.2.1.8 C3 가동 종료

o BLE 접속이 해제되었거나 BLE 메시지를 3분 이상 수신하지 못했을 때, C3가 종료된 것으로 판단하고 同 메시지를 전송

Q=5;2;1;<DeviceID>;4;0

2.2.1.9 DFU 진행상황 통보

o 펌웨어 업데이트 진행時 시작⋅종료⋅오류 등 진행상황 통보

o DFU 시작

Q=3;2;<DeviceType>;<DeviceID>;1,<FirmwareFilename>,<FileLength>;0

o DFU 종료(펌웨어 업데이트 성공時)

Q=3;2;<DeviceType>;<DeviceID>;2,<FirmwareFilename>,<FileLength>;0

o DFU 오류(펌웨어 업데이트 도중 오류 발생時)

Q=3;2;<DeviceType>;<DeviceID>;4,<FirmwareFilename>,<진행률(퍼센트)>;0

2.2.2 MQTT 메시지(서버 → 스마트폰)

2.2.2.1 MQTT 토픽

o 노인낙상 : TS/<DeviceID>

2.2.2.2 보호자 등록

o 보호자가 보호자 추가 등록을 요청할 때, 사용자의 동의를 확인한 후 보호자 추가 등록을 진행

Q=9;2;2;<DeviceID>;3,<TelNo>,<Mode>;0

구 분	설 명	비 고
Mode	o 1 : 보호자 앱 모드

* 사용자 동의 확인時‘Q=9;2;2;<DeviceID>;2,<TelNo>,<Mode>;0’를 서버로 전송

2.2.2.3 DFU 개시

o 펌웨어 업데이트 필요時 DFU 개시를 명령

Q=3;2;<DeviceType>;<DeviceID>;0,<FirmwareFilename>,<FileLength>;0